import java.util.ArrayList;
import java.util.List;

/**
 * 学院类
 */
public class College {
    // 聚合关系：学院包含多个建筑（建筑可独立存在）
    private List<Building> buildings = new ArrayList<>();
    // 组合关系：学院包含多个课程（课程依赖学院存在）
    private List<Course> courses = new ArrayList<>();

    // 添加建筑（聚合：外部可传入建筑）
    public void addBuilding(Building building) {
        buildings.add(building);
    }

    // 添加课程（组合：课程由学院创建，生命周期依赖学院）
    public Course createCourse(String courseName) {
        Course course = new Course(courseName, this); // 课程关联学院
        courses.add(course);
        return course;
    }
}

/**
 * 建筑类
 */
public class Building {
    private String name; // 建筑名称

    public Building(String name) {
        this.name = name;
    }
}

/**
 * 课程类（包含约束：必须在某个建筑中进行）
 */
public class Course {
    private String name;
    private College college; // 所属学院
    private Building location; // 上课地点（约束：必须设置）

    public Course(String name, College college) {
        this.name = name;
        this.college = college;
    }

    // 必须设置上课地点（满足约束）
    public void setLocation(Building location) {
        this.location = location;
    }
}